home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / Menu.h < prev    next >
C/C++ Source or Header  |  1992-06-15  |  4KB  |  139 lines

  1. #ifndef Menu_First
  2. #ifdef __GNUG__
  3. //pragma once
  4. #pragma interface
  5. #endif
  6. #define Menu_First
  7.  
  8. #include "Manager.h"
  9. #include "CompVObject.h"
  10. #include "PopupItem.h"
  11. #include "Separator.h"
  12.  
  13. class Clipper;
  14.  
  15. //---- MenuButtonItem ----------------------------------------------------------
  16.  
  17. const int cItemStateOneOf = 1,
  18.       cItemStateManyOf= 2;
  19.       
  20. class MenuButtonItem : public StateButton {
  21. public:
  22.     MetaDef(MenuButtonItem);
  23.     MenuButtonItem(int id, char *l= 0, char *s= 0);
  24.     MenuButtonItem(int id, VObject *l, char *s= 0);
  25.     Metric GetMinSize();
  26.     void SetOrigin(Point);
  27.     void SetExtent(Point e);
  28.     void DrawInner(Rectangle r, bool highlight);
  29.     char *AsString();
  30.     void SetShortCut(char *sc);
  31.     void SetLabel(char *s);
  32.     void SetString(char *s);
  33.     void InputKbd(Token &t);
  34.     int Compare(Object*);
  35. };
  36.  
  37. //---- Menu --------------------------------------------------------------------
  38.  
  39. enum MenuOptions {
  40.     eMenuTitle      = BIT(eEvtLast+1),       // show title
  41.     eMenuNoScroll   = BIT(eEvtLast+2),
  42.     eMenuDefault    = eMenuTitle,
  43.     eMenuLast       = eEvtLast + 2
  44. };
  45.  
  46. class Menu : public Manager {
  47. public:
  48.     MetaDef(Menu);
  49.     Menu(char *t= 0, bool dimall= TRUE, bool resetAll= TRUE, 
  50.                     int r= 0, int c= 1, SeqCollection *col= 0);
  51.     Menu(int id, char *t= 0, bool dimall= TRUE, bool resetAll= TRUE, 
  52.                     int r= 0, int c= 1, SeqCollection *col= 0);
  53.     ~Menu();
  54.  
  55.     //---- initialize
  56.     Window *DoMakeWindows();
  57.     VObject *FindItem(int id);
  58.     SeqCollection *GetCollection();
  59.     void SetCollection(SeqCollection *col, bool freeold= TRUE);
  60.     VObject *FindInitialItem(int id);
  61.     void Control(int id, int part, void *val);
  62.     VObject *FindAnItem(Point p);
  63.     int CheckKey(Token &t);
  64.     void SetNextHandler(EvtHandler *eh);
  65.     EvtHandler *GetNextHandler();  
  66.  
  67.     //---- show/hide
  68.     virtual int Pulldown(Point, VObject *v= 0);
  69.     int Popup(Point, VObject*, int id, bool showlast, int menupos, Rectangle exitr);
  70.     Point GetInitialPos(Point e);
  71.  
  72.     //---- submenues
  73.     void AppendMenu(Menu*, int id= 999);
  74.  
  75.     //---- inserting items
  76.     void Insert(VObject*);
  77.     void InsertBefore(int id, VObject*);
  78.     void InsertAfter(int id, VObject*);
  79.     void InsertItemBefore(int atId, char *, int myId);
  80.     void InsertItemAfter(int atId, char *, int myId);
  81.     void InsertItemsBefore(int atId, ...);
  82.     void InsertItemsAfter(int atId, ...);
  83.     void InsertItem(char*, int);
  84.     virtual VObject *MakeMenuItem(char *s, int id);
  85.  
  86.     //---- adding items
  87.     void Append(VObject*);
  88.     void AppendItem(char*, int);
  89.     void AppendItems(char *, ...);
  90.  
  91.     //---- replacing items
  92.     void ReplaceItem(int id, char *label);
  93.     void ToggleItem(int id, bool toggle, char *toggleTrue, char *toggleFalse);
  94.     void ToggleItem(int id, bool toggle, char *fmt, char *toggleTrue, char *toggleFalse);
  95.  
  96.     //---- removing items
  97.     VObject *RemoveItem(int id);
  98.     void RemoveAllItems(bool free= TRUE);
  99.     
  100.     //---- enable/disable items
  101.     void EnableItem(int, bool b= TRUE);
  102.     void EnableItems(int id, ...);
  103.     
  104.     void EnableAll(bool b= TRUE);
  105.     void DisableAll()
  106.     { EnableAll(FALSE); }
  107.     void ResetAll();
  108.     void DisableItem(int id)
  109.     { EnableItem(id, FALSE); }
  110.  
  111.     void CheckItem(int id, int state= 1, int type= cItemStateOneOf);
  112.     
  113.     //---- set selected item
  114.     int GetSelectedId()
  115.     { return selection; }
  116.     void SetSelectedItem(int);
  117.  
  118.     //---- find items
  119.     Menu *FindMenuItem(int);
  120.  
  121.     //---- input/output
  122.     OStream& PrintOn(OStream&);
  123.     IStream& ReadFrom(IStream&);
  124.  
  125. protected:
  126.     void InsertVItems(int atId, bool before, char *first, va_list ap);
  127.     void Init(int id, char *t, bool da, bool ra, int r, int c, SeqCollection *col);
  128.  
  129. protected:
  130.     VObject *view;
  131.     int selection;
  132.     Clipper *clipper;
  133.     bool resetAll;
  134.     bool dimAll;
  135.     EvtHandler *nextHandler;
  136. };
  137.  
  138. #endif
  139.